/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package bgu.ppm.sim.api.exp;

import bgu.ppm.sim.api.HasIdentity;
import bgu.sonar.util.ui.visual.HasVisualData;
import java.util.List;

/**
 *
 * @author User
 */
public interface Requirement<T> extends HasVisualData, HasIdentity, Iterable<T> {

    Class<T> getType();

    boolean isCollection();

    void add(T item);

    void set(T item);

    void clear();

    boolean remove(T item);

    T get();

    boolean isSatisfied(List<String> errors);
}
